package cn.iocoder.yudao.module.member.service.recruitCompany;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.controller.admin.recruitCompany.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.company.CompanyDO;
import cn.iocoder.yudao.module.member.dal.dataobject.recruitCompany.JobAndInvitCountDo;
import cn.iocoder.yudao.module.member.dal.dataobject.recruitCompany.JobPassDo;
import cn.iocoder.yudao.module.member.dal.dataobject.recruitCompany.RecruitCompanyDO;

import javax.validation.Valid;
import java.util.Date;
import java.util.List;

/**
 * 招聘企业管理 Service 接口
 *
 * @author 周枫皓
 */
public interface RecruitCompanyService {

    /**
     * 获得招聘企业管理分页
     *
     * @param  recruitCompanyPageReqVO 分页查询
     * @return 企业管理分页
     */
    PageResult<RecruitCompanyDO> getRecruitCompanyPage(RecruitCompanyPageReqVO recruitCompanyPageReqVO);

    /**
     * 获得招聘未填展示企业列表
     *
     * @return 企业管理列表
     */
    List<CompanyDO> getNoShowCompanyList();

    void setCompanyStatus(RecruCompanyUpdateReqVO recruCompanyUpdateReqVO);

    void setCompanyTop(RecruCompanyUpdateReqVO recruCompanyUpdateReqVO);
    /**
     * 获得招聘企业管理列表, 用于 Excel 导出
     *
     * @param recruitexportReqVO 查询条件
     * @return 企业管理列表
     */
    List<RecruitCompanyDO> getRecruitCompanyList(RecruitCompanyExportReqVO recruitexportReqVO);


    /**
     * 查询企业
     * @param id
     * @return
     */
    CompanyDO getCompany(Long id);

    /**
     * 查询
     */
    List<RecruitCompanyDO> getHotCompanyJobList(Date startDate, Date endDate);

    CompanyInfoRespVO getCompanyInfoCount(Integer type,String startDate,String endDate);

    Distribution getStudentInfoCount(Integer type,String startDate,String endDate);


    JobAndInvitCountDo getJobAndinvitCount(Date startDate, Date endDate);

    JobAndInvitCountDo getJobAndinvitCountNew(Integer type,Integer dayFlowFlag,String startDate,String endDate);


    List<JobPassDo> getFeedBackList(String startDate, String endDate);

    Distribution getDistribution(String startDate, String endDate);

    Boolean isNoshowCompany(Long id);

    List<RecruitCompanyDO> getRankingCompanyList( RecruitCompanyPageReqVO request);

    void updateCompanyHot(  Long id, Integer isHot );

    void updateCompanyNew(  Long id, Integer isNew );

    void updateRankingCompanySort(RankingCompanyIdReqVO rankingIdReqVO);

}
